const {src, dest, watch, series} = require('gulp')
const htmlmin = require('gulp-htmlmin')
const autoprefixer = require('gulp-autoprefixer')
const cleanCss = require('gulp-clean-css')
const babel = require('gulp-babel')
const uglify = require('gulp-uglify')
const webserver = require('gulp-webserver')

// 将所有任务定义好
// 压缩html
function compressHTML(cb){
    src('src/*.html')
    .pipe(htmlmin({
        collapseWhitespace: true
    }))
    .pipe(dest('dist'))
    cb()
}
// 复制网站图标
function cloneICO(cb){
    src('src/*.ico')
    .pipe(dest('dist'))
    cb()
}
// 复制font文件夹
function cloneFont(cb){
    src('src/font/*.*')
    .pipe(dest('./dist/font'))
    cb()
}
// 处理css
function handlerCSS(cb){
    src('./src/css/*.css')
    .pipe(autoprefixer()) // 需要加参数
    .pipe(cleanCss())
    .pipe(dest('./dist/css'))
    cb()
}
// 复制图片
function cloneIMG(cb){
    // src('./src/images/*.*')
    src(['./src/images/*.jpg', './src/images/*.png', './src/images/*.gif'])
    .pipe(dest('./dist/images'))
    cb()
}
// 处理js
function handlerJS(cb){
    src('./src/*.js')
    .pipe(babel({
        presets: ['es2015']
    }))
    .pipe(uglify())
    .pipe(dest('./dist'))
    cb()
}
function handlerS(cb){
    src('./src/js/*.js')
    .pipe(babel({
        presets: ['es2015']
    }))
    .pipe(uglify())
    .pipe(dest('./dist/js'))
    cb()
}
// 创建监视任务
function watchFile(cb){
    watch('./src/*.html', {
        ignoreInitial: false
    }, compressHTML)
    watch('./src/css/*.css', {
        ignoreInitial: false
    }, handlerCSS)
    watch('./src/images/*.*', {
        ignoreInitial: false
    }, cloneIMG)
    watch('./src/js/*.js', {
        ignoreInitial: false
    }, handlerJS)
    watch('./src/*.ico', {
        ignoreInitial: false
    }, cloneICO)
    watch('./src/font/*.*', {
        ignoreInitial: false
    }, cloneFont)
    watch('./src/*.js', {
        ignoreInitial: false
    }, handlerS)
    cb()
}
// 使用webserver
function server(cb){
    setTimeout(function(){
        src('dist', {
            allowEmpty: true
        })
        .pipe(webserver({
            open: true,
            livereload: true,
            // directoryListing: true,
        }))
    }, 5000)
    cb()
}

// // 导出任务
exports.default = series(watchFile, server)
// css压缩
// const {src, dest, watch, series} = require('gulp')
// const cleanCss = require('gulp-clean-css')
// function compressCSS(cb){
//     // 读取文件
//     src('src/css/*.css')
//     // 压缩处理
//     .pipe(cleanCss())
//     // 保存
//     .pipe(dest('dist/css'))
//     cb()
// }
// // exports.default = compressCSS
// // 重命名 - 不针对某种文件后缀重名，依赖插件：gulp-rename，这个插件可以给任意文件重命名从、
// exports.default = compressCSS